package com.itheima.ydd.controller;


import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.itheima.ydd.common.BusinessException;
import com.itheima.ydd.common.ResultData;
import com.itheima.ydd.entity.YddTag;
import com.itheima.ydd.mapper.YddTagMapper;
import com.itheima.ydd.service.IYddTagService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * 标签管理
 */

@RestController
@RequestMapping("/ydd_tag")
@Slf4j
public class YddTagController {


    @Autowired
    private IYddTagService yddTagService;

    @Autowired
    private YddTagMapper yddTagMapper;
    /**
     * 数据回显
     * @param id
     * @return
     */
    @GetMapping("/rowInfo")
    public ResultData getById(Long id){
        YddTag yddTag = yddTagService.getById(id);
        return ResultData.ok("",yddTag);
    }


    /**
     * 添加
     * @param yddTag
     * @return
     */
    @PostMapping("/add")
    public ResultData save(@RequestBody YddTag yddTag){
        log.info(yddTag.toString());
        if (StrUtil.isNotBlank(yddTag.getTagname())){
            yddTagMapper.save(yddTag);
            return ResultData.ok("","");
        }else{
            throw new BusinessException("标签名不能为空");
        }
    }

    /**
     * 修改
     * @param yddTag
     * @return
     */
    @PostMapping("/update")
    public ResultData update(@RequestBody YddTag yddTag){
        log.info(yddTag.toString());
        if (ObjectUtil.isNotNull(yddTag)) {
            yddTagService.updateById(yddTag);
            return ResultData.ok("","");
        }else{
            throw new BusinessException("修改的标签名不能为空");
        }
    }

    /**
     * 查询所有
     * @return
     */
    @GetMapping
    public ResultData allYddTag(){
        List<YddTag> list = yddTagService.list();
        log.info(list.toString());
        return ResultData.ok("",list);
    }

    /**
     * 分页查询
     * @param tagename
     * @param page
     * @param limit
     * @return
     */
    @GetMapping("/list")
    public ResultData page(String tagename, Integer page , Integer limit){
        log.info("page={},pageSize={},name={}",page,limit,tagename);
        Integer page1 = page;
        Integer pageSize =limit;
        return yddTagService.getPage(tagename,page1,pageSize);
    }

    /**
     * 删除
     * @param id
     * @return
     */
    @GetMapping("/del")
    public ResultData delete(Long id){
        log.info(id.toString());
        yddTagService.removeById(id);
        return ResultData.ok("","");
    }
}
